00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015 #ifndef EXPORTGEN33_HPP_
00016 #define EXPORTGEN33_HPP_
00017
00018 #include <iostream>
00019 #include <string>
00020 #include <vector>
00021 #include <map>
00022
00023 #include "gridpack/parallel/communicator.hpp"
00024 #include "gridpack/component/data_collection.hpp"
00025 #include "gridpack/parser/dictionary.hpp"
00026 #include "gridpack/network/base_network.hpp"
00027 #include "gridpack/export/base_export.hpp"
00028
00029 namespace gridpack {
00030 namespace expnet {
00031
00032 template <class _network>
00033 class ExportGen33
00034 {
00035 public:
00036
00037
00038
00039
00040 explicit ExportGen33(boost::shared_ptr<_network> network) :
00041 p_network(network), p_comm(network->communicator())
00042 {
00043 }
00044
00045
00046
00047
00048 virtual ~ExportGen33(){}
00049
00050
00051
00052
00053
00054
00055
00056
00057 void writeGenBlock(std::ofstream &fout)
00058 {
00059 BaseExport<_network> exprt(p_comm);
00060 int me = p_comm.rank();
00061
00062 int nbus = p_network->numBuses();
00063 gridpack::component::DataCollection *data;
00064 int i, j;
00065 char buf[MAX_STRING_SIZE];
00066 std::vector<text_line> text_data;
00067 for (i=0; i<nbus; i++) {
00068 if (p_network->getActiveBus(i)) {
00069 data = p_network->getBusData(i).get();
00070 double rval;
00071 int ival;
00072 std::string sval;
00073 gridpack::ComplexType zval;
00074 char *ptr;
00075 int ngen = 0;
00076 data->getValue(GENERATOR_NUMBER,&ngen);
00077 for (j=0; j<ngen; j++) {
00078 ptr = buf;
00079 ival = p_network->getOriginalBusIndex(i);
00080 data->getValue(GENERATOR_BUSNUMBER,&ival,j);
00081 sprintf(ptr,"%d,",ival);
00082 ptr += strlen(ptr);
00083 data->getValue(GENERATOR_ID,&sval,j);
00084 sprintf(ptr," \'%s\',",sval.c_str());
00085 ptr += strlen(ptr);
00086 rval = 0.0;
00087 if (data->getValue(GENERATOR_PG,&rval,j)) {
00088 data->getValue("GENERATOR_PF_PG",&rval,j);
00089 }
00090 sprintf(ptr," %f,",rval);
00091 ptr += strlen(ptr);
00092 rval = 0.0;
00093 if (data->getValue(GENERATOR_QG,&rval,j)) {
00094 data->getValue("GENERATOR_PF_QG",&rval,j);
00095 }
00096 sprintf(ptr," %f,",rval);
00097 ptr += strlen(ptr);
00098 rval = 9999.0;
00099 data->getValue(GENERATOR_QMAX,&rval,j);
00100 sprintf(ptr," %f,",rval);
00101 ptr += strlen(ptr);
00102 rval = -9999.0;
00103 data->getValue(GENERATOR_QMIN,&rval,j);
00104 sprintf(ptr," %f,",rval);
00105 ptr += strlen(ptr);
00106 rval = 1.0;
00107 data->getValue(GENERATOR_VS,&rval,j);
00108 sprintf(ptr," %f,",rval);
00109 ptr += strlen(ptr);
00110 ival = 0;
00111 data->getValue(GENERATOR_IREG,&ival,j);
00112 sprintf(ptr,"%d,",ival);
00113 ptr += strlen(ptr);
00114 rval = 100.0;
00115 if (!data->getValue(GENERATOR_MBASE,&rval,j)) {
00116 data->getValue(CASE_SBASE,&rval);
00117 }
00118 sprintf(ptr," %f,",rval);
00119 ptr += strlen(ptr);
00120 zval = ComplexType(0.0,1.0);
00121 data->getValue(GENERATOR_ZSOURCE,&zval,j);
00122 sprintf(ptr," %f, %f,",real(zval),imag(zval),j);
00123 ptr += strlen(ptr);
00124 rval = 0.0;
00125 data->getValue(GENERATOR_RT,&rval,j);
00126 sprintf(ptr," %f,",rval);
00127 ptr += strlen(ptr);
00128 rval = 0.0;
00129 data->getValue(GENERATOR_XT,&rval,j);
00130 sprintf(ptr," %f,",rval);
00131 ptr += strlen(ptr);
00132 rval = 1.0;
00133 data->getValue(GENERATOR_GTAP,&rval,j);
00134 sprintf(ptr," %f,",rval);
00135 ptr += strlen(ptr);
00136 ival = 1;
00137 data->getValue(GENERATOR_STAT,&ival,j);
00138 sprintf(ptr,"%d,",ival);
00139 ptr += strlen(ptr);
00140 rval = 100.0;
00141 data->getValue(GENERATOR_RMPCT,&rval,j);
00142 sprintf(ptr," %f,",rval);
00143 ptr += strlen(ptr);
00144 rval = 9999.0;
00145 data->getValue(GENERATOR_PMAX,&rval,j);
00146 sprintf(ptr," %f,",rval);
00147 ptr += strlen(ptr);
00148 rval = -9999.0;
00149 data->getValue(GENERATOR_PMIN,&rval,j);
00150 sprintf(ptr," %f,",rval);
00151 ptr += strlen(ptr);
00152 ival = p_network->getOriginalBusIndex(i);
00153 data->getValue(GENERATOR_OWNER1,&ival,j);
00154 sprintf(ptr," %d,",ival);
00155 ptr += strlen(ptr);
00156 rval = 1.0;
00157 data->getValue(GENERATOR_OFRAC1,&rval,j);
00158 sprintf(ptr," %f,",rval);
00159 ptr += strlen(ptr);
00160 ival = 0;
00161 data->getValue(GENERATOR_OWNER2,&ival,j);
00162 sprintf(ptr," %d,",ival);
00163 ptr += strlen(ptr);
00164 rval = 1.0;
00165 data->getValue(GENERATOR_OFRAC2,&rval,j);
00166 sprintf(ptr," %f,",rval);
00167 ptr += strlen(ptr);
00168 ival = 0;
00169 data->getValue(GENERATOR_OWNER3,&ival,j);
00170 sprintf(ptr," %d,",ival);
00171 ptr += strlen(ptr);
00172 rval = 1.0;
00173 data->getValue(GENERATOR_OFRAC3,&rval,j);
00174 sprintf(ptr," %f,",rval);
00175 ptr += strlen(ptr);
00176 ival = 0;
00177 data->getValue(GENERATOR_OWNER4,&ival,j);
00178 sprintf(ptr," %d,",ival);
00179 ptr += strlen(ptr);
00180 rval = 1.0;
00181 data->getValue(GENERATOR_OFRAC4,&rval,j);
00182 sprintf(ptr," %f,",rval);
00183 ptr += strlen(ptr);
00184 ival = 0;
00185 data->getValue(GENERATOR_WMOD,&ival,j);
00186 sprintf(ptr," %d,",ival);
00187 ptr += strlen(ptr);
00188 rval = 1.0;
00189 data->getValue(GENERATOR_WPF,&rval,j);
00190 sprintf(ptr," %f\n",rval);
00191 text_line text;
00192 strcpy(text.text,buf);
00193 text.global_idx = p_network->getGlobalBusIndex(i);
00194 text.device_idx = j;
00195 text_data.push_back(text);
00196 }
00197 }
00198 }
00199 if (me == 0) {
00200 fout << "0 / END FIXED SHUNT DATA, BEGIN GENERATOR DATA" << std::endl;
00201 }
00202 exprt.writeDataBlock(fout, text_data);
00203 }
00204
00205 private:
00206 boost::shared_ptr<_network> p_network;
00207
00208 gridpack::parallel::Communicator p_comm;
00209 };
00210
00211 }
00212 }
00213
00214 #endif